$('.message a').click(function(){
    $('form').animate({height: "toggle", opacity: "toggle"}, "slow");
});
//登录事件
function login() {
    // 处理登录逻辑，可以使用 JavaScript 发送请求到后端进行验证
    var email = document.getElementById("login-email").value;
    var password = document.getElementById("login-password").value;

    if (!email) {
        $('#error-message-email').text("邮箱不能为空");
    }
    if (!password) {
        $('#error-message-password').text('密码不能为空');
    }
    // 使用ajax异步请求
    $.ajax({
        url: '/login',
        type: 'POST',
        // contentType: 'application/json',
        // data: JSON.stringify({
        //     email: email,
        //     password: password
        // }),
        data: {
            email: email,
            password: password
        },
        dataType: 'json', // 响应的数据类型为JSON
        success: function(responseData) {
            if (responseData.msg) {
                window.location.href = '/index'; // 跳转到首页

            } else {
                $('#error-message-password').text("用户名或密码错误");
            }
            // if (responseData.error) {
            //     $('#error-message-password').text(responseData.error);
            // } else {
            //
            //     if (responseData.requestURI){
            //         window.location.href = responseData.requestURI;
            //     }else {
            //         window.location.href = '/index'; // 跳转到首页
            //     }
            // }
        },
        error: function(error) {

        }
    });
}


var emailInput = document.getElementById('email');
var passwordInput = document.getElementById('password');
var confirmPasswordInput = document.getElementById('confirm-password');

//标志变量
var isEmailValid = false;
// var isUsernameValid = false;
var isPasswordValid = false;
var isConfirmPasswordValid = false;

// 定义一个延迟发送请求的变量
var delayTimer;

// 监听密码输入框的 input 事件
passwordInput.addEventListener('input', function(event) {

    // 清除之前的延迟检查
    clearTimeout(delayTimer);

    var password = document.getElementById('password').value;
    // 设置延迟，并在延迟结束后检查密码格式是否正确
    delayTimer = setTimeout(function() {
        // 检查密码是否符合要求
        var isValid = validatePassword(password);

        var validationMessage = validatePassword(password);
        if (validationMessage === "") {
            // 密码通过验证
            $('#password-error').text('');
            isPasswordValid = true;
        } else {
            // 密码未通过验证，显示错误信息给用户
            $('#password-error').text(validationMessage);
            isPasswordValid = false;
        }

    }, 500); // 延迟时间设置为500毫秒
});


// 监听确认密码输入框的 input 事件
confirmPasswordInput.addEventListener('input', function(event) {
    // 清除之前的延迟检查
    clearTimeout(delayTimer);

    // 设置延迟，并在延迟结束后检查密码是否相等
    delayTimer = setTimeout(function() {
        var password = $('#password').val();
        var confirmPassword = $('#confirm-password').val();

        // 检查密码是否相等
        if (password === confirmPassword) {
            $('#confirm-password-error').text('');
            isConfirmPasswordValid = true;
        } else {
            $('#confirm-password-error').text('确认密码与密码不一致');
            isConfirmPasswordValid = false;
        }
    }, 500); // 延迟时间设置为500毫秒
});


// // 监听用户名输入框的 input 事件
// usernameInput.addEventListener('input', function(event) {
//     // 获取邮箱输入框的值
//     var username = event.target.value;
//
//     // 清除之前的延迟发送请求
//     clearTimeout(delayTimer);
//
//     // 设置延迟，并在延迟结束后发送请求
//     delayTimer = setTimeout(function() {
//         // 验证用户名长度和字符组成
//         if (username.length > 6 && username.length < 20 && /^[a-zA-Z0-9]+$/.test(username)) {
//             // 符合要求的情况下，可以执行相应的操作，例如显示一个验证通过的提示信息
//             // 发送 AJAX 请求到后端进行用户名验证
//             isUsernameValid = true;
//             $.ajax({
//                 url: '/checkUsername',
//                 type: 'POST',
//                 contentType: 'application/json',
//                 data: JSON.stringify({ username: username }),
//                 success: function(response) {
//                     // 根据后端返回的结果进行处理
//                     if (response === "exists") {
//                         // 用户名已存在，显示错误提示
//                         $('#username-error').text('用户名已存在');
//                     } else {
//                         // 用户名可用，清空错误提示
//                         $('#username-error').empty();
//                     }
//                 },
//                 error: function() {
//                     // 发生错误时的处理
//                 }
//             });
//         } else {
//             isUsernameValid = false;
//             // 不符合要求的情况下，可以执行相应的操作，例如显示一个验证失败的提示信息
//             $('#username-error').text('用户名长度应该至少大于6字符不大于20字符且只能包含数字和英文字母');
//             console.log('用户名验证失败');
//         }
//
//     }, 500); // 延迟时间设置为500毫秒
// });

// 监听邮箱输入框的 input 事件
emailInput.addEventListener('input', function(event) {
    // 清除之前的延迟验证
    clearTimeout(delayTimer);

    // 设置延迟，并在延迟结束后验证邮箱格式
    delayTimer = setTimeout(function() {
        var email = event.target.value;

        if (isValidEmail(email)) {
            isEmailValid = true;
            $('#email-error').text('');
        } else {
            isEmailValid = false;
            $('#email-error').text('邮箱格式不正确');
        }
    }, 500); // 延迟时间设置为500毫秒
});

// 检查邮箱格式是否正确的函数
function isValidEmail(email) {
    var emailRegex = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    return emailRegex.test(email);
}

//发送邮箱验证码
function sendVerificationCode(send) {
    var email = document.getElementById("email").value;
    if (!email){
        $('#email-error').text('邮箱不能为空');
        return;
    }

    // 实现发送验证码的逻辑
    $.ajax({
        url: "/account/sendEmail",
        type: 'GET',
        contentType: 'application/json',
        data: {email : email},
        success: function(data) {
            if (data ==='emailExists'){
                $('#email-error').text('邮箱已注册');
            }
            if (data ==='emailError'){
                $('#email-error').text('邮箱格式不正确');
                isEmailValid = false;
            }
        },
        error: function() {
            // 发生错误时的处理
        }
    })

    var countDown = 60; // 倒计时秒数
    send.removeAttribute("href"); // 移除 href 属性
    send.onclick = null; // 移除 onclick 事件

    var countdownInterval = setInterval(function() {
        send.innerText = countDown; // 更新按钮文本
        countDown--;

        if (countDown < 0) {
            clearInterval(countdownInterval);
            send.setAttribute("href", "javascript:void(0)"); // 添加 href 属性
            send.onclick = function() {
                sendVerificationCode(send);
            }; // 添加 onclick 事件
            send.innerText = "send"; // 恢复按钮文本
        }
    }, 1000); // 间隔1秒（1000毫秒）更新一次倒计时
}
//发送注册请求
function register() {
    var confirmPassword = document.getElementById("confirm-password").value;
    var password = document.getElementById("password").value;
    var email = document.getElementById("email").value;
    var verificationCode = document.getElementById("verification-code").value;

    if (!password){
        $("password-error").text('密码不能为空');
        return;
    }
    if (!confirmPassword){
        $("confirm-password-error").text('确认密码不能为空');
        return;
    }
    if (!email){
        $("email-error").text('邮箱不能为空');
        return;
    }
    if (!verificationCode){
        $("verification-code-error").text('验证码不能为空');
        return;
    }
    // 检查所有标志变量的值
    if (isPasswordValid && isConfirmPasswordValid && isEmailValid) {
        $.ajax({
            url: '/account/register',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({
                password: password,
                email: email,
                verificationCode: verificationCode
            }),
            success: function(data) {
                if (data ==="success") {
                    // 注册成功，执行其他操作
                    // window.location.href = '/login'; // 注册成功后跳转到登录页面
                    $('form').animate({height: "toggle", opacity: "toggle"}, "slow");
                }
                if (data ==='passwordError'){
                    $('#password-error').text("密码应至少包含8个字符，并且需包含2种或更多的字符类型（例如大写字母、小写字母、数字和特殊字符）。");
                    isPasswordValid = false;
                }
                if (data ==='emailError'){
                    isEmailValid = false;
                    $('#email-error').text('邮箱格式不正确');
                }

                if (data ==="verificationCodeError") {
                    $('#verification-code-error').text('验证码不正确');
                }
                if (data ==="codeError") {
                        $('#verification-code-error').text('请重新发送验证码');
                }
            },
            error: function(error) {
                console.log(error);
            }
        });
    } else {
        // 如果有任一标志变量为false，则拦截请求并执行相应的操作
        // 例如显示验证失败的提示信息或禁止提交表单
        return;
    }
}

function validatePassword(password) {
    // 验证密码长度是否在8到20之间
    if (password.length < 8 || password.length > 20) {
        return "密码长度必须介于8到20个字符之间。";
    }

    // 验证是否包含小写字母
    if (!/[a-z]/.test(password)) {
        return "密码必须包含至少一个小写字母。";
    }

    // 验证是否包含大写字母
    if (!/[A-Z]/.test(password)) {
        return "密码必须包含至少一个大写字母。";
    }

    // 验证是否包含数字
    if (!/\d/.test(password)) {
        return "密码必须包含至少一个数字。";
    }

    // 密码符合要求，返回空字符串表示通过验证
    return "";
}